using System;

namespace System.Net.DnsToolkit.Packet {
    /// <summary>
    /// 
    /// 
    ///                                 1  1  1  1  1  1
    ///   0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    /// +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    /// |                                               |
    /// /                     QNAME                     /
    /// /                                               /
    /// +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    /// |                     QTYPE                     |
    /// +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    /// |                     QCLASS                    |
    /// +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    /// 
    /// </summary>
    ///
    public interface IQuestion {
        /// <summary>
        /// a domain name represented as a sequence of labels, where
        /// each label consists of a length octet followed by that
        /// number of octets.  The domain name terminates with the
        /// zero length octet for the null label of the root.  Note
        /// that this field may be an odd number of octets; no
        /// padding is used.
        /// </summary>
        IDomainName QName { get; set; }
        /// <summary>
        /// a two octet code which specifies the type of the query.
        /// The values for this field include all codes valid for a
        /// TYPE field, together with some more general codes which
        /// can match more than one type of RR.
        /// </summary>
        QTypeEnum QType { get; set; }
        /// <summary>
        /// a two octet code that specifies the class of the query.
        /// For example, the QCLASS field is In for the Internet.
        /// </summary>
        QClassEnum QClass { get; set; }
    }
}
